A processing unit with the computing function in a computer network (such as computers, communication equipment and so on) is referred to as a node.
The basis of Internet communication technology is the packet switching network technology, which is usually called “Packet Switching”. one basic idea of the Packet Switching is that when the information is transmitted, firstly it would be divided into several packets (usually known as data packets), and transmitted out separately after being organized with serial numbers, and then putted together at the destination according to the serial numbers.
The original packet switching means that information in the source end is divided into several data packets and transmitted to destination end. The transmission path is completed by the network equipment, and is private to the users. This kind of communication can be referred to as “one-to-one” communication.
Nowadays content in many communication applications needs to be distributed to a plurality of computers in many cases, which is usually known as an application layer multicast of overlay network. In transmission process, Packet Switching technology and working principles of Store and Forward are also adopted, but when transmission is completed, it is necessary to ensure that a plurality of nodes have copies of the transmitted content. This kind of communication can be regarded as “one-to-many” communication.
Although the traditional C/S pattern communication seems to be “one-to-many”, that is, one server for a plurality of clients. However, this perspective is usually thought to be macroscopical. In transmission details, transmission between the server and a client is independent, so C/S pattern is thought to be “one-to-one” communication in the present application.
Some people think that since information has widely existed in the network world, why not make full use of existing data. Then there comes to a method of requesting data from multi-sources, such as multi-source BitTorrent. This kind of communication can be regarded as “many-to-one” communication.
The significance of “many-to-one” is also specific to transmission link, that is, content that needs to be transmitted is stored in a plurality of nodes. Moreover, during transmission, Packet Switching technology is also adopted. The difference lies in that each node of the plurality of nodes that responsible for transmission only transmits a portion of the content. As there can be a plurality of nodes transmitting simultaneously, “many-to-one” can improve transmission speed.
Actually, there is also a “many-to-many” communication, the significance of which is also specific to transmission link, that is, content that needs to be transmitted is stored in a plurality of nodes, which cooperatively transmit the content simultaneously to other plurality of nodes. “Many-to-many” communication is positive, and it can improve efficiency and simplify problems. The reason why it can simplify problems is that other communication forms such as “one-to-one”, “one-to-many” and “many-to-one” can all be reduced to “many-to-many”.
“Many-to-many” communication is needed in many cases. For example, “many-to-one” communication does well in resolving the problem of file sharing, but still needs some improvements. “many-to-one” will bring to two problems: (i) nodes need to request link, and also possibly need query to a plurality of nodes; (ii) nodes that responsible for transmission are possible uneven, so that some nodes may carry no transmission, while some other nodes are so busy as to cause congestion. The reason of the problems mentioned above is that, the plurality of nodes in the source end do not cooperate with the plurality of nodes in the receiving end very well. If there is a global transmission scheduling, query in (i) can be avoided and load balance in (ii) can be solved. But with a global transmission scheduling, it can be called “many-to-many” communication rather than “many-to-one” communication any more.
“Many-to-many” communication is complex, in which three following key problems must be solved.
A. How to manage nodes? To make nodes with different capabilities and behaviors adapted to the dynamic network, in which, nodes may enter or quit at any moment.
B. How to transmit. Or in other words, how to transmit content from a plurality of nodes to other plurality of nodes simultaneously?
C. How to guarantee QoS of transmission. For example, how to implement a transmission scheduling, congestion control and error control in a dynamic network environment?
When being transmitted, the content is divided into many content blocks for transmission, and at this moment, where they are transmitted to needs to be notified. Methods of notifying can be different according to the different environments, and one of the common methods is to be notified with a transmitting table or a routing table.
When the nodes receive some content blocks, they may need to transmit such content blocks again, and members need to be notified of the target users of transmission again. Methods of notifying can be different according to the different environments. One of the adopted methods is that when content blocks are packaged and transmitted, a table of users who need transmission again is attached, in which necessary date for communication is contained, and this method adapts to transmitting again to a few users. Another method adopted is that members in the receiving group maintain the related transmitting table or routing table, which can be one or more—content blocks transmitted from different places use different transmitting tables or routing tables, be publicly or privately. In this method, the transmitting tables or routing tables need to be maintained dynamically.
The notifying methods mentioned above can be used for content delivering. However, as existing methods can not solve technique problems mentioned above very well, a more advanced improving method still needs to be adopted.